f57d829fa051e96b10a430f5e54017e58e5c8101,solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java,TestPKIAuthenticationPlugin,test,#,72

Before Change


    mock.solrRequestInfo = new SolrRequestInfo(localSolrQueryRequest, new SolrQueryResponse());
    BasicHttpRequest request = new BasicHttpRequest("GET", "http://localhost:56565");
    mock.setHeader(request);
    final AtomicReference<Header> header = new AtomicReference<>();
    header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
    assertNotNull(header.get());
    assertTrue(header.get().getValue().startsWith(nodeName));
    final AtomicReference<ServletRequest> wrappedRequestByFilter = new AtomicReference<>();
    HttpServletRequest mockReq = createMockRequest(header);
    FilterChain filterChain = (servletRequest, servletResponse) -> wrappedRequestByFilter.set(servletRequest);
    mock.doAuthenticate(mockReq, null, filterChain);

    assertNotNull(wrappedRequestByFilter.get());
    assertEquals("solr", ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal().getName());

    //test 2
    principal.set(null); // no user
    header.set(null);
    wrappedRequestByFilter.set(null);//
    request = new BasicHttpRequest("GET", "http://localhost:56565");
    mock.setHeader(request);
    assertNull(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
    mock.doAuthenticate(mockReq, null, filterChain);
    assertNotNull(wrappedRequestByFilter.get());
    assertNull(((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal());

    //test 3 . No user request . Request originated from Solr
    mock.solrRequestInfo = null;
    header.set(null);
    wrappedRequestByFilter.set(null);
    request = new BasicHttpRequest("GET", "http://localhost:56565");
    mock.setHeader(request);

After Change


      mock.doAuthenticate(mockReq, null, filterChain);
    });

    run("$", () -> {
      mock.solrRequestInfo = null;
      header.set(null);
      wrappedRequestByFilter.set(null);
      request = new BasicHttpRequest("GET", "http://localhost:56565");
      mock.setHeader(request);
      header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
      assertNotNull(header.get());
      assertTrue(header.get().getValue().startsWith(nodeName));
      MockPKIAuthenticationPlugin mock1 = new MockPKIAuthenticationPlugin(null, nodeName) {
        int called = 0;

        @Override
        PublicKey getRemotePublicKey(String nodename) {
          try {
            return called == 0 ? new CryptoKeys.RSAKeyPair().getPublicKey() : correctKey;
          } finally {
            called++;
          }
        }
      };

      mock1.doAuthenticate(mockReq, null, filterChain);

    });

  }